  public class Solution {
      /* 无牛客，leetcode
       * 多机调度问题：n个作业由m台机器加工处理的最短时间
       * 最短时间：这些机器中工作时间最长的机器的时间 的最小值
       * 贪心：每次把 剩余的所需时间最长的work 放入最先完成的 machine中
       *
       * 放最大的！！！放最大的！！！放最大的！！！
       *
       *
       * */
      public static int greedStrategy(int[] works, int m) {
          int[] machines = new int[m];
          int n = works.length;
          Arrays.sort(works);
          if (n <= m) {
              return works[n - 1];
          }

          for (int i = n - 1; i >= 0; i--) {
              //找到最先结束（所用时间最少）的机器
              int finish = 0;
              for (int j = 0; j < m; j++) {
                  if (machines[j] < machines[finish]) {
                      finish = j;
                  }
              }
              machines[finish] += works[i];
          }

          int ret = machines[0];
          for (int time : machines) {
              if (time > ret) {
                  ret = time;
              }
          }
          return ret;
      }
  }